Various types of networks, such as the Internet, local area networks (LAN), wide area networks (WAN), and mobile telephone networks, are used in data communication. It is often the case in such data communication using a network that a transport layer protocol is used to appropriately pass data on to an application layer while controlling end-to-end communication between a transmitting device and a receiving device. Examples of the transport layer protocol include the connection-oriented Transmission Control Protocol (TCP) and the connectionless User Datagram Protocol (UDP).
TCP defines a mechanism for returning an ACK (ACKnowledgement) response to the transmitting device when the receiving device has received a data packet normally in order to confirm the receipt of the data packet by the receiving device. In addition, TCP defines a mechanism for resending a data packet when the transmitting device has failed to receive an expected ACK within a certain amount of time after transmitting the data packet. TCP with such mechanisms is a high-integrity transport-layer protocol.
On the other hand, because not providing receipt confirmation using an ACK, UDP is typically used for data communication providing high-speed data transmission and giving greater importance to the communication throughput and real-time services. In addition, UDP is able to independently implement a function to improve the integrity in upper-layer protocols. For example, UDP may be combined with functions such as Forward Error Correction (FEC) coding and retransmission control. Implementation of such combinations enables high-speed and high-integrity data transmission.
Examples of error correction codes include a Reed-Solomon code and a Low-Density Parity-check Code (LDPC). In addition, a Random Parity Stream (RPS) code has lately been proposed, which is a sophisticated error correction code generated by using exclusive OR (XOR) calculation. Furthermore, a proposed technique is directed to a data transmission method of realizing high-speed data transmission by combining UDP with RPS coding. According to the data transmission method, the transmitting side performs XOR operations on data segments created by dividing data to be transmitted, to thereby generate encoded data pieces, and the receiving side reconstructs the transmitted data from the encoded data pieces using XOR operations.
See, for example, Japanese Patent No. 4318317.
According to the above-described data transmission system, the probability that the receiving side is able to reconstruct the transmitted data increases with a larger number of data segments created by dividing the data to be transmitted. That is, an increased number of data segments enhances the data integrity. On the other hand, the increased number of data segments leads to an increased number of XOR operations performed to generate encoded data pieces. In an encoding method where each encoded data piece is generated by performing a logical operation on a combination of data segments, as in the case of this example, generating the same encoded data pieces with fewer logical operations enables a reduction in operation load associated with encoding, without sacrificing the integrity.